package com.uam.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.uam.db.model.vo.UserListVO;
import com.uam.web.common.model.Result;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author uam
 * @create 2023/11/29 22:10
 * @email uam@uam.com
 */
public interface UserListService {
    /**
     * 用户登录接口
     *
     * @param loginName 登录名称
     * @param password  密码
     * @return 登录结果
     */
    Result login(String loginName, String password);

    /**
     * 查询用户列表
     *
     * @param pageNum       页码
     * @param pageSize      页面大小
     * @param roleName      角色名称
     * @param loginName     登录名称
     * @param userName      用户名称/姓名
     * @param studentNumber 学号
     * @return 查询结果
     */
    IPage<UserListVO> selectUesrList(Integer pageNum, Integer pageSize, List<String> roleName, String loginName, String userName, String studentNumber);

    /**
     * 修改密码
     *
     * @param request  请求头
     * @param password 密码
     * @param userId   用户id
     * @return
     */
    String editPassword(HttpServletRequest request, String password, Long userId);

    /**
     * 删除用户
     *
     * @param request 请求头
     * @param userIds 用户ids
     * @return 删除结果
     */
    Result deleteUserByUserIds(HttpServletRequest request, List<Long> userIds);

    /**
     * @param userId        用户id
     * @param loginName     登录名
     * @param userName      用户名
     * @param studentNumner 学号
     * @param roleName      角色名称
     * @param password      密码
     * @return 返回结果
     */
    Result addUser(Long userId, String loginName, String userName, String studentNumner, String roleName, String password);

    /**
     * 编辑用户接口
     *
     * @param request       请求头
     * @param password      密码
     * @param roleName      角色名称
     * @param loginName     登录名
     * @param userName      用户名
     * @param studentNumber 学号
     * @param userId        用户id
     * @return 返回结果
     */
    Result editUser(HttpServletRequest request, String password, String roleName, String loginName, String userName, String studentNumber, Long userId);

    /**
     * 注销
     * @param request 请求头
     * @return 返回结果
     */
    Result logout(HttpServletRequest request);
}
